Skip to content

fix: разные варианты распределения и понятные счетчики нагрузки - #816

Merged
TThanos3000 merged 1 commit into
devfrom
fix/dev-distribution-defaults-20261023
Oct 23, 2026
Merged

TThanos3000 merged 1 commit into
devfrom
fix/dev-distribution-defaults-20261023

Conversation

@TThanos3000

@TThanos3000 TThanos3000 commented Oct 23, 2026 •

Copy link
Copy Markdown
Collaborator

Что изменено

Повторное автораспределение учитывает предыдущий подписанный план и возвращает другой сбалансированный состав. Ответ can_reroll заранее сообщает, существует ли альтернатива. В нагрузку добавлены assigned_before/assigned_after для полного числа назначенных проектов; legacy before/after сохраняют смысл незавершенных оценок.

Реализация / API

Необязательный previous_plan_token в existing preview endpoint; проверяются подпись, программа, возраст, revision и актуальные пулы. Замена будущего назначения не увеличивает дисбаланс незавершенной нагрузки; альтернативный цикл сохраняет нагрузку всех экспертов. Существующие назначения исключены из обменов. Невозможный вариант не предлагается. Ответ API расширен совместимо, atomic signed apply сохранен.

UI

Отдельный frontend: прямой общий preview всех кейсов/доступных экспертов, явные показатели назначено/осталось, скрытие недоступного reroll. API deploy первым.

Permissions

Managed-program permission и transaction lock без изменений. Проверки case/pool/team/slot/revision сохранены. Новые preview не пишут назначения/оценки и не отправляют письма.

Проверки

  • 61 PostgreSQL/relevant tests passed.
  • Полный перебор малых графов допустимых назначений сравнен с поиском альтернативы: достижимость, ограничения, уникальность и баланс.
  • Same-seed повторный reroll, цикл и несколько мест на проект, завершенная оценка при сохраненном назначении, единственный вариант, foreign/tampered/expired/stale previous token.
  • Black, targeted Flake8, diff --check; review без blocking/major findings.

Acceptance criteria

  • Результат reroll отличается при существовании сбалансированной альтернативы.
  • can_reroll=false для единственного варианта.
  • Назначенный оценивший эксперт имеет assigned=1, unfinished=0.
  • Старые контракты, защита оценок и атомарное подтверждение сохранены.

Не проверено

Реальные пользователи/письма исключены из QA. Опубликованный UI проверяется с изолированным локальным API во frontend этапе.

Риски / migration

Без миграций; API deploy до frontend. Production вне scope.

Release verification: source CI 39882440895 and PostgreSQL CI 39882476522 passed 1330 tests each; PostgreSQL also passed 39 locking/vacancy tests. DEV deploy succeeded with pinned runtime image for the merge, pending migrations 0, runtime access check, smoke and Celery checks passed.

DEV validation completed: API merge c33295b and frontend merge de05a9327b9b29ceef5478dcec4f3ff605c260e6 have exactly the tested source trees. Published DEV resources passed browser checks at 1440/390 px against isolated local PostgreSQL: all-case defaults, four distinct rerolls each, unique-plan capability, workload labels, pool/project edits and local confirmation. No preview writes, real-user writes, mail, JS errors or 5xx. Four actual anonymous DEV GET routes passed. Dedicated QA processes and PostgreSQL stopped.

@TThanos3000
TThanos3000 merged commit c33295b into dev Oct 23, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants